package com.xuecheng.api.content;

import com.xuecheng.api.content.model.dto.CourseBaseDTO;
import com.xuecheng.api.content.model.qo.QueryCourseModel;
import com.xuecheng.api.content.model.vo.CourseBaseVO;
import com.xuecheng.common.domain.page.PageRequestParams;
import com.xuecheng.common.domain.page.PageVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;

//课程基本信息Api接口
@Api(value = "课程基本信息Api接口", tags = "内容-课程基本业务信息Api接口", description = "课程基本业 务信息Api接口")
public interface CourseBaseApi {
    // 分页条件查询课程基本信息
    @ApiOperation("分页条件查询课程基本信息")
    PageVO queryCourseList(PageRequestParams params, QueryCourseModel model);


    @ApiOperation(value = "保存课程基本信息")
    @ApiImplicitParam(name = "courseBaseVO", value = "课程基本视图信息", required = true, dataType = "CourseBaseVO", paramType = "body")
    CourseBaseDTO createCourseBase(CourseBaseVO courseBaseVO);

    @ApiOperation(value = "根据Id查询课程基本信息")
    @ApiImplicitParam(name = "courseBaseId", value = "课程ID", required = true, dataType = "Long", paramType = "path",example = "1")
    CourseBaseDTO getCourseBase(Long courseBaseId);

    @ApiOperation(value = "更新录播课程基本信息")
    @ApiImplicitParam(name = "courseBaseVO", value = "课程基本信息VO", required = true, dataType = "CourseBaseVO", paramType = "body")
    CourseBaseDTO modifyCourseBase(CourseBaseVO courseBaseVO);

    @ApiOperation(value = "删除录播课程基本信息")
    @ApiImplicitParam(name = "courseBaseId", value = "课程基本信息Id", required = true, dataType = "Long", paramType = "path")
    boolean removeCourseBase(Long courseBaseId);

    @ApiOperation(value = "提交审核课程状态")
    @ApiImplicitParam(name = "courseBaseId", value = "课程基本信息Id", required = true, dataType = "Long", paramType = "path")
    void commitCourseBase(Long courseBaseId);

    @ApiOperation(value = "课程预览")
    Object previewCourse(Long courseId,Long companyId);

    @ApiOperation(value = "课程发布")
    void publish(Long courseId);
}